package com.fulu.javabase.paramPassing;

import java.util.Arrays;

public class ParamTest {

    public static void main(String[] args) {
        int i = 1;
        String s = "hello";
        Integer num = 200;
        int[] arr = {1, 2, 3, 4, 5};
        PData pData = new PData();

        change(i, s, num, arr, pData);
        System.out.println(i);// 1  基本数据类型传递值
        System.out.println(s);// hello    String数据类型不可变，所以 += 操作会重新创建一个对象，s会指向新的对象
        System.out.println(num); // 200     包装类不可变，所以 += 操作会重新创建一个对象，num指向新对象
        System.out.println(Arrays.toString(arr)); // 2,2,3,4,5   arr指向的堆内存地址没变，只是改变了对象的某一个元素
        System.out.println(pData.a); // 101    pData指向的堆内存没有变，改变对象属性
    }

    public static void change(int j, String s, Integer num, int[] arr, PData pData){
        j += 1;
        s += "world";
        num += 1;
        arr[0] += 1;
        pData.a += 1;



    }
}

class PData{
    int a = 100;
}
